package demo.day12

// Kotlin语言的标准函数和泛型扩展函数
fun main() {
    "Kiki".mLet {

    }
    123.mLet {

    }
    'C'.mLet {

    }


}

// 万能类型 任何类型 所有类型 都可以使用我的mLet
// 高阶函数必须使用inline修饰 才能提高性能
/**
 * private 私有化
 * inline 我们的函数是高阶函数 所以使用到内联 做lambda的优化 性能提高
 * fun<I,O> 在函数中 声明的两个泛型 函数泛型 I 代表Input O代表Output 输出
 * I.mLet 对I输入Input进行函数扩展 扩展函数的名称是mLet 意味着 所有类型 万能类型都可以使用
 * lambda:(I) -> O (I输入类型) -> O输出类型
 * O会根据用户的返回类型 变化而变化
 * lambda(this)·
 */
private inline fun <I, O> I.mLet(lambda: (I) -> O) = lambda(this)